#include "Server.hpp"
#include <memory>
#include <vector>
#include <cstdio>
using namespace std;

// string handler(const string& str, const string& clientip, uint16_t clientport)
// {
//     cout<<"["<<clientip<<": "<<clientport<<"]@" ;
//     string message = "server get a message : " + str;
//     return message;
// }

// bool SafeCheck(const string& cmd)
// {
//     vector<string> key_word = {"rm","mv","cp","kill","sudo","unlink","uninstall","yum","top","while"};
//     for(auto& word:key_word)
//     {
//         auto pos = cmd.find(word);
//         if(pos != string::npos) return false;
//     }
//     return true;
// }

// string ExcuteCommand(const std::string &cmd)
// {  
//     cout<<"get a request cmd: "<<cmd << endl;
 
//     if(!SafeCheck(cmd)) return "OH,SO BAD";
//     FILE *fp = popen(cmd.c_str(), "r");
//     if(nullptr == fp)
//     {
//         perror("popen");
//         return "error";
//     }   
//     string result;
//     char buffer[4096];
//     while(true)
//     {
//         char *ok = fgets(buffer, sizeof(buffer), fp);
//         if(ok == nullptr) break;
//         result += buffer;
//     }
//     pclose(fp);
//     return result;
// }

int main(int argc, char* argv[])
{
    if(argc != 2)
    {
        cout<<"\n\rCorrect usage is : "<<argv[0]<< " port[1024+]\n"<<endl;
        exit(0);
    }
    uint16_t port = stoi(argv[1]);
    std::unique_ptr<Server> ser (new Server(port,"192.168.40.128"));

    ser->Init();
    //ser->Run(handler);
    ser->Run();

    return 0;
}